Geophysical simulation and inversion of subsurface flow are common in the oil and gas field. Simulation is a process of attempting to predict the behavior of a system with predefined characteristics and under certain conditions. For computational simulation the process requires the definition of model parameters, defining physical relations and development of computational algorithmic framework. Once these are established, the simulation itself is time consuming, as it is performed using state of the art von-Neumann computational architecture. Geophysical inversion is a process used to find a distribution of a physical property that causes a set of physical measurements recorded in a field survey. For inversion, the goal is to infer the subsurface model parameters, or substructure properties, given measurement data. This inference process involves the solution of a large-scale non-linear optimization problem in which the simulation problem is solved repeatedly (both for function evaluation as well as for derivation of the gradients).